from api.api_client import APIClient
from common.logger import logger

class RequestHandler:
        """
        请求处理类，用于处理HTTP请求。
        该类初始化时绑定一个基础URL，并提供了一个方法来发送POST请求。
        它主要用来演示如何封装HTTP客户端，以便于在代码中复用基础URL，简化请求流程。
        """
        def __init__(self, base_url):
            """
            初始化函数。
            参数:
            - base_url (str): HTTP客户端的基础URL，用于构造完整的请求地址。
            说明:
            - 初始化时，创建了一个APIClient实例，并将base_url作为参数传入，以便所有请求都基于这个URL。
            """
            self.client = APIClient(base_url)
            logger.info("接口请求地址 ==>> {}".format(base_url))

        def post_request(self, endpoint, headers, json,):
            """
            发送POST请求的方法。
            参数:
            - endpoint (str): 请求的终点URL片段，将被添加到base_url之后，构成完整请求地址。
            - headers (dict): 请求的HTTP头部信息，字典格式。
            - json (dict): 请求的JSON载荷。
            返回:
            - response: 来自POST请求的响应对象。
            说明:
            - 该方法使用已初始化的APIClient实例，向指定的终点发送POST请求，并返回响应对象。
            - 主要用于演示如何封装特定HTTP方法的请求处理。
            """
            response = self.client.post(endpoint, headers, json)
            logger.info("接口请求接口 ==>> {}".format(endpoint))
            logger.info("接口请求参数 ==>> {}".format(json))
            logger.info("接口请求头部 ==>> {}".format(headers))
            return response

        def get_request(self, endpoint, headers, json):
            """
            发送POST请求的方法。
            参数:
            - endpoint (str): 请求的终点URL片段，将被添加到base_url之后，构成完整请求地址。
            - headers (dict): 请求的HTTP头部信息，字典格式。
            - json (dict): 请求的JSON载荷。
            返回:
            - response: 来自POST请求的响应对象。
            说明:
            - 该方法使用已初始化的APIClient实例，向指定的终点发送POST请求，并返回响应对象。
            - 主要用于演示如何封装特定HTTP方法的请求处理。
            """
            response = self.client.post(endpoint, headers, json)
            logger.info("接口请求地址 ==>> {}".format(endpoint))
            logger.info("接口请求参数 ==>> {}".format(json))
            logger.info("接口请求结果 ==>> {}".format(headers))
            return response
